package com.gipson.amc.utils.listprocess;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.gipson.amc.utils.strprocess.StrUtil;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 列表处理工具类。
 *
 * @author cjw 2020-02-25
 */
public class ListProcess {


	/**
	 * 从list_entire中清洗掉list_del中的内容,并返回清洗后的列表。
	 * @param
	 * @return
	 * @author cjw 2020-02-25
	 */
	public static List<String> washList(List<String> list_entire, List<String> list_del){
		if(list_entire==null||list_del==null){
			return list_entire;
		}
		List<String> list_washed=new ArrayList<>();

		for(String str: list_entire){
			//若list_del中含有str
			if(list_del.contains(str)){
				continue;
			}else{
				//若list_del中不含有str
				list_washed.add(str);
			}
		}
		return list_washed;
	}

	/**
	 * - listToTree
	 * - <p>方法说明<p>
	 * - 将JSONArray数组转为树状结构
	 * - @param arr 需要转化的数据
	 * - @param id 数据唯一的标识键值
	 * - @param pid 父id唯一标识键值
	 * - @param child 子节点键值
	 * - @return JSONArray
	 *
	 * @author: from_cnblog
	 */
	public static JSONArray listToTree(JSONArray arr, String id, String pid, String child) {
		JSONArray r = new JSONArray();
		JSONObject hash = new JSONObject();
		//将数组转为Object的形式，key为数组中的id
		for (int i = 0; i < arr.size(); i++) {
			JSONObject json = (JSONObject) arr.get(i);
			hash.put(json.getString(id), json);
		}
		//遍历结果集
		for (int j = 0; j < arr.size(); j++) {
			//单条记录
			JSONObject aVal = (JSONObject) arr.get(j);
			//在hash中取出key为单条记录中pid的值
			JSONObject hashVP = (JSONObject) hash.get(aVal.get(pid) == null ? null : aVal.get(pid).toString());
			//如果记录的pid存在，则说明它有父节点，将她添加到孩子节点的集合中
			if (hashVP != null) {
				//检查是否有child属性
				if (hashVP.get(child) != null) {
					JSONArray ch = (JSONArray) hashVP.get(child);
					ch.add(aVal);
					hashVP.put(child, ch);
				} else {
					JSONArray ch = new JSONArray();
					ch.add(aVal);
					hashVP.put(child, ch);
				}
			} else {
				r.add(aVal);
			}
		}
		return r;
	}






	/**
	 * @param
	 * @return
	 * @author cjw 2020-05-06
	 */
	public static void main(String[] args) {

	}
}
